草庐IT

Python NotImplemented 常量

全部标签

c++ - 基于编译时常量在模板中禁用/隐藏函数

是否可以使用编译时常量有条件地隐藏或禁用模板类中的函数?想象一下下面的类:templateclassMyClassT{//IonlywantthisfunctionavailableifM==N,otherwiseitisillegaltocallstaticMyClassTSomeFunc(){...}}MyClassT::SomeFunc();//FineMyClassT::SomeFunc();//Shouldn'tevencompile 最佳答案 使用偏特化和继承://Factorcommoncodeinabaseclass

c++ - 在 C++ 中使用模板函数确定常量

我想使用模板函数来确定一个类型是否为const,例如:templateboolIsConst(TTYPE){returnfalse;}templateboolIsConst(constTTYPE){returntrue;}但这行不通,还有其他建议吗? 最佳答案 您要找的是std::is_const.如果你给它的类型是const,value将是true。否则,value将为false。这是您可以在该页面上找到的示例:#include#include//neededforis_constintmain(){std::cout::valu

c++ - C/C++ 编译器是否会对可交换运算符(例如 : +, *)进行重新排序以优化常量

请问第2行下面的代码intbar;intfoo=bar*3*5;优化为intbar;intfoo=bar*15;甚至更多:intfoo=3*bar*5;可以优化吗?目的其实是问我能不能随便写intfoo=bar*3*5;代替intfoo=bar*(3*5);保存括号。(并且减轻了手动操作那些常量排序的需要=>并且在许多情况下,将常量与相关变量分组比将常量分组以进行优化更有意义) 最佳答案 几乎所有的编译器都会对整数执行此操作,因为即使常量折叠可能以不同的方式溢出,标准也可能会忽略溢出,因此他们可以做他们喜欢的事情。如果遵循严格的fl

c++ - `shared_ptr` 破坏了对象的常量性

考虑以下代码:classB{intx;public:B():x(10){}intget_x()const{returnx;}voidset_x(intvalue){x=value;}};classA{boost::shared_ptrb_;public:boost::shared_ptrget_b()const{returnb_;}//(1)};voidf(constA&a){boost::shared_ptrb=a.get_b();intx=b->get_x();b->set_x(++x);//(2)}intmain(){Aa;f(a);return0;}在这段代码(2)中,get_

c++ - 堆还是栈?当在 C++ 中的函数调用中引用常量字符串时

考虑函数:char*func(){return"Something";}常量string(chararray)"Something"是存储在堆栈中作为函数调用的局部变量还是全局变量堆?我猜测它在堆中。如果多次调用该函数,内存中有多少份"Something"?(它是堆还是堆栈?) 最佳答案 字符串文字“Something”的类型为constchar*。因此,它们既不在堆上也不在堆栈上,而是在一个只读位置,这是一个实现细节。来自WikipediaDataThedataareacontainsglobalandstaticvariable

c++ - 常量指针数组

好的,我知道这是无效的charchar_A='A';constchar*myPtr=&char_A;*myPtr='J';//error-can'tchangevalueof*myP[因为我们声明了一个指向常量字符的指针]为什么这是有效的?constchar*linuxDistro[6]={"Debian","Ubuntu","OpenSuse","Fedora","LinuxMint","Mandriva"};for(inti=0;i感谢您的关注! 最佳答案 你写*linuxDistro="WhyCanIchangeThis";完

c# - 在哪里可以找到 HOST_E_CLRNOTAVAILABLE(类型 HRESULT)常量的声明?

谁能帮我找到头文件,其中包含ExecuteInDefaultAppDomain()返回的HRESULT的声明功能。编译器看不到MSDN中记录的值:HOST_E_CLRNOTAVAILABLE,HOST_E_NOT_OWNER等等注意,包括在内。 最佳答案 这些代码在CorError.h中。就#include他们将可用。 关于c#-在哪里可以找到HOST_E_CLRNOTAVAILABLE(类型HRESULT)常量的声明?,我们在StackOverflow上找到一个类似的问题:

c++ - 为什么 typeid 不像 sizeof 那样是编译时常量

为什么typeid(someType)不像sizeof(someType)那样是常量?出现这个问题是因为最近我尝试了类似的东西:templateclassFoo{static_assert(typeid(T)==typeid(Bar)||typeid(T)==typeid(FooBar));};而且我很好奇为什么编译器在编译时知道类型的大小(sizeof),但不知道类型本身(typeid) 最佳答案 当您处理类型时,您宁愿使用简单的元编程技术:#includetemplatevoidFoo(){static_assert((std:

C++ 是否可以延迟常量静态成员的初始化?

我正在使用Qt,但这是一个通用的C++问题。我的情况很简单,我有一个Constants类,它有一个常量静态成员,我希望在进行某些函数调用后对其进行初始化。常量.h#ifndefCONSTANTS_H#defineCONSTANTS_HclassConstants{public:staticconstchar*constFILE_NAME;};#endif//CONSTANTS_H常量.cpp#include"constants.h"#includeconstchar*constConstants::FILE_NAME=QApplication::applicationFilePath(

c++ - 常量的哪个属性使其不可更改?

今天我遇到了一个面试,其中一个问题对我来说非常棘手。面试官说“如何让常量能够改变它的值?”我回答“使用指针”并给他看了一个例子:intmain(void){constinta=3;int*ptr;ptr=(int*)(&a);printf("A=%d\n",a);*ptr=5;printf("A=%d\n",a);return0;}但他说这很好。但是告诉我哪个是使常数不变的属性?他还说,有一个属性我们可以改变并使常量可变。有这样的属性(property)吗?它是如何工作的? 最佳答案 如果他说这很好,那他就错了:试图修改常量对象会导